package com.tmxk.api.days02.cyq;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/*
* String类
* */
public class StringDemo {
    static Map<String, User> userMap = new HashMap<>();

    static {
        // 初始加载两条用户信息
        User user1 = new User("1001", "Tom", "123456");
        User user2 = new User("1002", "Emma", "000000");
        userMap.put(user1.getUserId(), user1);
        userMap.put(user2.getUserId(), user2);
    }

    public static void main(String[] args) {
        // char 和 String 区别: String 就是由多个字符(char)组成
        /**
         * 2.1. boolean equals(Object anObject)      比较值字符串内容
         * 2.2. int length() 获取字符串长度
         * 2.3. boolean isEmpty()  字符串是否为空(字符串长度是否为零)
         * 2.4. char charAt(int index)  根据字符串指定下标位置返回对应单个字符
         * 2.5. byte[] getBytes()    将字符串转换成字节数组(将字符串内容跟File文件交互时应用 )
         * 2.6. boolean equalsIgnoreCase(String anotherString)  忽略大小写比较字符串内容
         * 2.7. int compareTo(String anotherString)  字符串比较值大小(按字典顺序比较两个字符串);
         *   如 : a.compareTo(b);  a字符串大于b字符串,返回负数； a字符串等于b字符串,返回0； a字符串小于b字符串,返回正数
         * 2.8. int compareToIgnoreCase(String str) 忽略大小写字符串比较值大小(按字典顺序比较两个字符串); [比较的结果同2.7]
         * 2.9. int indexOf(Object ch) 返回指定字符第一次出现的字符串内的索引
         * 2.10. int lastIndexOf(Object ch) 返回指定字符的最后一次出现的字符串中的索引
         * 2.11. String substring(int beginIndex) 根据指定下标位置截取字符串,该方法代表从指定开始位置截取到最后
         * 2.12. String substring(int beginIndex, int endIndex) 根据指定开始下标位置和结束下标位置截取字符串
         *   注 : 2.11 和 2.12 截取字符下标的位置 遵循 取前不取后
         * 2.13. String concat(String str)  字符串追加, 就相当于 加号(+) 拼接字符串
         * 2.14. String replace(char oldChar, char newChar)  字符串根据指定字符进行替换
         * 2.15. boolean matches(String regex) 字符串正则匹配
         * 2.16. String[] split(String regex)  分割字符串
         * 2.17. String toLowerCase()  将字符串转换成小写
         * 2.18. String toUpperCase()  将字符串转换成大写
         * 2.19. String trim()  去空格
         * 2.20. String format(String format, Object... args) 字符串格式化指定内容
         * 2.21. String valueOf(Object obj) 将指定参数转换成字符串
         * 2.22. String intern() 一个字符串与该字符串具有相同的内容，保证来自一个唯一的字符串池。
         */

        /**
         *  需求 : 登录 / 注册
         *  用户名
         *  密码
         */
        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎使用xx平台,请先登录");
        System.out.print("请输入用户名:");
        String userName = sc.next();
        System.out.print("请输入密码:");
        String password = sc.next();
        // 判断当前用户输入的 用户名和密码是否存在平台系统中
        Collection<User> users = userMap.values();
        boolean isBool = false;
        for (User u : users) {
            if (userName.equalsIgnoreCase(u.getUsername()) && password.equals(u.getPassword())) {
                isBool = true;
                break;
            }
        }
        if (isBool) {
            System.out.println("登录成功,欢迎" + userName + "登录");
            String mes = "登录成功,欢迎".concat(userName).concat("登录");
            System.out.println("mes:" + mes);
        } else {
            System.out.println("登录失败,密码或用户名有误");
        }

    }
}